package br.ufrj.dcc.so.trab2.manager;

import br.ufrj.dcc.so.trab2.FortEventGeneratorImpl;
import br.ufrj.dcc.so.trab2.FortEventGenetator;

public abstract class Pessoa {

	private FortEventGenetator eventGenetator = new FortEventGeneratorImpl();
	
	/**
	 * Método que define o tempo que o processo deve ficar parado até que possa gerar um outro evento.  
	 */
	public void sleep() {
		try {
			//O módulo variando de 0 a 4, mais um, define o tempo de espera entre 1 e 5 segundos. 
			long tempoEspera = (eventGenetator.generate()%5)+1;
			System.out.println("espera:\t"+tempoEspera);
			//por algum modivo numeros negativos esvam sendo gerado aqui.
			Thread.sleep(Math.abs(tempoEspera));
		} catch (InterruptedException e) {
			e.printStackTrace();
		}		
	}
	
	
	/**
	 * Método que define o tempo que o processo deve ficar parado até que possa gerar um outro evento.
	 * @param tempoEspera Tempo que a thread deve ficar dormindo!
	 */
	public void sleep(long tempoEspera) {
		try {
			Thread.sleep(Math.abs(tempoEspera));
		} catch (InterruptedException e) {
			e.printStackTrace();
		}		
	}
}
